# 导入tushare
import tushare as ts
import pandas as pd
import common.base_profile as pf

# 设置你的 Tushare token
ts.set_token(pf.token)

# 创建Tushare数据接口
pro = ts.pro_api()
# 定义交易所代码
EXCHANGES = {
    'SSE': '上交所 (上海)',
    'SZSE': '深交所 (深圳)'
}

# 存储所有期权数据
all_options = []

# 循环获取每个交易所的期权列表
for exchange, desc in EXCHANGES.items():
    print(f"正在获取 {desc} 期权合约列表...")
    df = pro.opt_basic(
        exchange=exchange,  # 指定交易所
        fields=[
            "ts_code",
            "exchange",
            "name",
            "per_unit",           # 合约单位
            "opt_code",           # 对应标的代码
            "opt_type",           # 期权类型（普通、备兑等）
            "call_put",           # 认购/认沽
            "exercise_type",      # 行权方式（美式、欧式）
            "exercise_price",     # 行权价
            "s_month",            # 合约到期年月（字符串）
            "maturity_date",      # 到期日
            "list_price",         # 挂牌基准价
            "list_date",          # 上市日期
            "delist_date",        # 退市日期
            "last_edate",         # 最后行权日
            "last_ddate",         # 最后交易日
            "quote_unit",         # 报价单位
            "min_price_chg"       # 最小变动价位
        ]
    )
    print(f"{desc} 共获取 {len(df)} 条记录")
    all_options.append(df)

# 合并所有数据
if all_options:
    df_all = pd.concat(all_options, ignore_index=True)
else:
    df_all = pd.DataFrame()

# 排序：按上市日期倒序
df_all.sort_values("list_date", ascending=False, inplace=True)

# 重置索引
df_all.reset_index(drop=True, inplace=True)

# 输出结果预览
print("\n✅ 所有期权合约获取完成！共 {} 条记录。".format(len(df_all)))
print("\n前10条数据预览：")
print(df_all.head(10))

# 可选：保存到CSV
df_all.to_csv("../data/opt_etf_basic.csv", index=False, encoding="utf_8_sig")
# print("数据已保存至 all_options_china.csv")